/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package opera.view.PaineisDeAlteracao;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JRadioButton;
import opera.view.MoldePaineis;
import opera.view.PaineisDeCadastro.PnlCadastrarFichaParte01;
import opera.view.PaineisDeCadastro.PnlCadastrarFichaParte02;
import opera.model.Ficha;
import opera.model.Jogo;

/**
 *
 * @author Luciano
 */
public class PnlAlterarFicha extends MoldePaineis {

    /**
     * Creates new form PnlAlterarFicha
     */
    public PnlAlterarFicha(Jogo jogo) {
        initComponents();
        
        pnlCadastrarFichaParte01.getRdbJogador().setEnabled(false);
        pnlCadastrarFichaParte01.getRdbNpc().setEnabled(false);
        pnlCadastrarFichaParte01.getRdbMonstro().setEnabled(false);
        
        pnlCadastrarFichaParte02.getBtnCadastrar().setVisible(false);
        
        setJogo(jogo);
        
        habilitarCampos(false);
        carregarCmbSelecionar(rdbJogador);
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        grpTipoDeFicha = new javax.swing.ButtonGroup();
        pnlCadastrarFichaParte01 = new opera.view.PaineisDeCadastro.PnlCadastrarFichaParte01();
        pnlCadastrarFichaParte02 = new opera.view.PaineisDeCadastro.PnlCadastrarFichaParte02();
        jPanel1 = new javax.swing.JPanel();
        rdbJogador = new javax.swing.JRadioButton();
        rdbMonstro = new javax.swing.JRadioButton();
        rdbNpc = new javax.swing.JRadioButton();
        jPanel2 = new javax.swing.JPanel();
        lblSelecionar = new javax.swing.JLabel();
        cmbSelecionar = new javax.swing.JComboBox();
        btnAlterar = new javax.swing.JButton();

        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Tipo de Ficha"));

        grpTipoDeFicha.add(rdbJogador);
        rdbJogador.setSelected(true);
        rdbJogador.setText("Jogador");
        rdbJogador.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                rdbJogadorActionPerformed(evt);
            }
        });

        grpTipoDeFicha.add(rdbMonstro);
        rdbMonstro.setText("Monstro");
        rdbMonstro.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                rdbMonstroActionPerformed(evt);
            }
        });

        grpTipoDeFicha.add(rdbNpc);
        rdbNpc.setText("NPC");
        rdbNpc.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                rdbNpcActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(rdbJogador)
                .addGap(18, 18, 18)
                .addComponent(rdbMonstro)
                .addGap(18, 18, 18)
                .addComponent(rdbNpc)
                .addContainerGap(57, Short.MAX_VALUE))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(rdbJogador)
                    .addComponent(rdbMonstro)
                    .addComponent(rdbNpc))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder("Selecionar Ficha"));

        lblSelecionar.setText("Ficha Jogador:");

        cmbSelecionar.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
        cmbSelecionar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cmbSelecionarActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(lblSelecionar)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(cmbSelecionar, 0, 173, Short.MAX_VALUE)
                .addContainerGap())
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lblSelecionar)
                    .addComponent(cmbSelecionar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        btnAlterar.setText("Alterar");

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(pnlCadastrarFichaParte01, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                            .addComponent(pnlCadastrarFichaParte02, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(btnAlterar)))
                    .addGroup(layout.createSequentialGroup()
                        .addGap(10, 10, 10)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(pnlCadastrarFichaParte02, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(btnAlterar))
                    .addComponent(pnlCadastrarFichaParte01, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(223, Short.MAX_VALUE))
        );
    }// </editor-fold>//GEN-END:initComponents

    private void rdbJogadorActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rdbJogadorActionPerformed
        // TODO add your handling code here:
        alterarTextoLblSelecionar(rdbJogador);
        carregarCmbSelecionar(rdbJogador);
        habilitarCampos(false);
        limparCampos();
        pnlCadastrarFichaParte01.getRdbJogador().setSelected(true);
    }//GEN-LAST:event_rdbJogadorActionPerformed

    private void rdbNpcActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rdbNpcActionPerformed
        // TODO add your handling code here:
        alterarTextoLblSelecionar(rdbNpc);
        carregarCmbSelecionar(rdbNpc);
        habilitarCampos(false);
        limparCampos();
        pnlCadastrarFichaParte01.getRdbNpc().setSelected(true);
    }//GEN-LAST:event_rdbNpcActionPerformed

    private void rdbMonstroActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rdbMonstroActionPerformed
        // TODO add your handling code here:
        alterarTextoLblSelecionar(rdbMonstro);
        carregarCmbSelecionar(rdbMonstro);
        habilitarCampos(false);
        limparCampos();
        pnlCadastrarFichaParte01.getRdbMonstro().setSelected(true);
    }//GEN-LAST:event_rdbMonstroActionPerformed

    private void cmbSelecionarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmbSelecionarActionPerformed
        // TODO add your handling code here:
        if( (cmbSelecionar.getSelectedItem() != null) && (!cmbSelecionar.getSelectedItem().equals("")) && (!cmbSelecionar.getSelectedItem().equals(" ")) ){
            habilitarCampos(true);
            if(rdbJogador.isSelected()){
                pnlCadastrarFichaParte01.habilitarEntradas(true);
            }
            if(rdbNpc.isSelected()){
                pnlCadastrarFichaParte01.habilitarEntradas(false);
            }
            if(rdbMonstro.isSelected()){
                pnlCadastrarFichaParte01.habilitarEntradas(false);
            }
        }else{
            habilitarCampos(false);
        }
    }//GEN-LAST:event_cmbSelecionarActionPerformed

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btnAlterar;
    private javax.swing.JComboBox cmbSelecionar;
    private javax.swing.ButtonGroup grpTipoDeFicha;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JLabel lblSelecionar;
    private opera.view.PaineisDeCadastro.PnlCadastrarFichaParte01 pnlCadastrarFichaParte01;
    private opera.view.PaineisDeCadastro.PnlCadastrarFichaParte02 pnlCadastrarFichaParte02;
    private javax.swing.JRadioButton rdbJogador;
    private javax.swing.JRadioButton rdbMonstro;
    private javax.swing.JRadioButton rdbNpc;
    // End of variables declaration//GEN-END:variables
    private String endereco;
    private Jogo jogo;
    private Ficha ficha;

    public void preencherCampos() throws IOException, ClassNotFoundException{
        
        String itemSelecionado = (String) cmbSelecionar.getSelectedItem();
        
        String enderecoObjeto = endereco + "\\" + itemSelecionado +".txt";
        
        FileInputStream fis = new FileInputStream(enderecoObjeto);
        try (ObjectInputStream ois = new ObjectInputStream(fis)) {
            ficha = (Ficha) ois.readObject();
        }
        
        if(rdbJogador.isSelected()){
            pnlCadastrarFichaParte01.setTxtNomeJogador(ficha.getJogador());
            pnlCadastrarFichaParte01.setTxtCampanha(ficha.getCampanha());
        }
        
        pnlCadastrarFichaParte01.setTxtNomePersonagem(ficha.getPersonagem());
        pnlCadastrarFichaParte01.setTxtExperiencia(""+ficha.getExperiencia());
        
        pnlCadastrarFichaParte02.setTxtFisico(ficha.getAtributos()[0]);
        pnlCadastrarFichaParte02.setTxtDestreza(ficha.getAtributos()[1]);
        pnlCadastrarFichaParte02.setTxtInteligencia(ficha.getAtributos()[2]);
        pnlCadastrarFichaParte02.setTxtVontade(ficha.getAtributos()[3]);
        pnlCadastrarFichaParte02.setTxtPercepcao(ficha.getAtributos()[4]);
        pnlCadastrarFichaParte02.setTxtMana(ficha.getAtributos()[5]);
        pnlCadastrarFichaParte02.setTxtMente(ficha.getAtributos()[6]);
        pnlCadastrarFichaParte02.setTxtSorte(ficha.getAtributos()[7]);
        
    }

    @Override
    public void atualizarJComboBox() {
        JRadioButton rdbSelecionado = null;
        if(rdbJogador.isSelected()){
            rdbSelecionado = rdbJogador;
        }
        if(rdbNpc.isSelected()){
            rdbSelecionado = rdbNpc;
        }
        if(rdbMonstro.isSelected()){
            rdbSelecionado = rdbMonstro;
        }
        carregarCmbSelecionar(rdbSelecionado);
    }
    
    
    
    private void carregarCmbSelecionar(JRadioButton rdb){

        String carregar = null;
        if(rdb.getText().equals(rdbJogador.getText())){
            carregar = "\\Fichas\\Jogador";
        }
        if(rdb.getText().equals(rdbNpc.getText())){
            carregar = "\\Fichas\\NPC";
        }
        if(rdb.getText().equals(rdbMonstro.getText())){
            carregar = "\\Fichas\\Monstro";
        }
        
        cmbSelecionar.setModel(new javax.swing.DefaultComboBoxModel(new String[] { ""}));
        File diretorio;
        diretorio = new File("C:\\Opera\\Jogos\\" + jogo.getNome() + "\\" + carregar);
        
        endereco = diretorio.getAbsolutePath();
        
        if(diretorio.exists()){
            //statusDiretorio = diretorio.mkdir();
            String diretorios[] = diretorio.list();
            for(int i = 0; i < diretorios.length; i++){
                //System.out.println(diretorios[i]);
                String item = diretorios[i].substring(0, (diretorios[i].length()-4) );
                cmbSelecionar.addItem(item);
            }
        }
    }
    
    private void alterarTextoLblSelecionar(JRadioButton rdb){
        lblSelecionar.setText("Ficha " + rdb.getText() + ":");
    }
    
    private void habilitarCampos(boolean habilitar){
        pnlCadastrarFichaParte01.getTxtNomeJogador().setEditable(habilitar);
        pnlCadastrarFichaParte01.getTxtNomePersonagem().setEditable(habilitar);
        pnlCadastrarFichaParte01.getTxtCampanha().setEditable(habilitar);
        pnlCadastrarFichaParte01.getTxtExperiencia().setEditable(habilitar);
        
        pnlCadastrarFichaParte02.getTxtDestreza().setEditable(habilitar);
        pnlCadastrarFichaParte02.getTxtFisico().setEditable(habilitar);
        pnlCadastrarFichaParte02.getTxtInteligencia().setEditable(habilitar);
        pnlCadastrarFichaParte02.getTxtMana().setEditable(habilitar);
        pnlCadastrarFichaParte02.getTxtMente().setEditable(habilitar);
        pnlCadastrarFichaParte02.getTxtPercepcao().setEditable(habilitar);
        pnlCadastrarFichaParte02.getTxtSorte().setEditable(habilitar);
        pnlCadastrarFichaParte02.getTxtVontade().setEditable(habilitar);
    }
    
    
    public JButton getBtnAlterar() {
        return btnAlterar;
    }

    public void setBtnAlterar(JButton btnAlterar) {
        this.btnAlterar = btnAlterar;
    }

    public JComboBox getCmbSelecionar() {
        return cmbSelecionar;
    }

    public void setCmbSelecionar(JComboBox cmbSelecionar) {
        this.cmbSelecionar = cmbSelecionar;
    }

    public PnlCadastrarFichaParte01 getPnlCadastrarFichaParte01() {
        return pnlCadastrarFichaParte01;
    }

    public void setPnlCadastrarFichaParte01(PnlCadastrarFichaParte01 pnlCadastrarFichaParte01) {
        this.pnlCadastrarFichaParte01 = pnlCadastrarFichaParte01;
    }

    public PnlCadastrarFichaParte02 getPnlCadastrarFichaParte02() {
        return pnlCadastrarFichaParte02;
    }

    public void setPnlCadastrarFichaParte02(PnlCadastrarFichaParte02 pnlCadastrarFichaParte02) {
        this.pnlCadastrarFichaParte02 = pnlCadastrarFichaParte02;
    }

    public JRadioButton getRdbJogador() {
        return rdbJogador;
    }

    public void setRdbJogador(JRadioButton rdbJogador) {
        this.rdbJogador = rdbJogador;
    }

    public JRadioButton getRdbMonstro() {
        return rdbMonstro;
    }

    public void setRdbMonstro(JRadioButton rdbMonstro) {
        this.rdbMonstro = rdbMonstro;
    }

    public JRadioButton getRdbNpc() {
        return rdbNpc;
    }

    public void setRdbNpc(JRadioButton rdbNpc) {
        this.rdbNpc = rdbNpc;
    }

    public Jogo getJogo() {
        return jogo;
    }

    public final void setJogo(Jogo jogo) {
        this.jogo = jogo;
    }

    public Ficha getFicha() {
        return ficha;
    }

    public void setFicha(Ficha ficha) {
        this.ficha = ficha;
    }

    public ButtonGroup getGrpTipoDeFicha() {
        return grpTipoDeFicha;
    }

    public void setGrpTipoDeFicha(ButtonGroup grpTipoDeFicha) {
        this.grpTipoDeFicha = grpTipoDeFicha;
    }
    
    
}
